Skip to content

FINERACT-2293: New command processing - create client address#6049

Open
nidhiii128 wants to merge 1 commit into
apache:developfrom
nidhiii128:FINERACT-2293-create-client-address
Open

FINERACT-2293: New command processing - create client address#6049
nidhiii128 wants to merge 1 commit into
apache:developfrom
nidhiii128:FINERACT-2293-create-client-address

Conversation

@nidhiii128

Copy link
Copy Markdown
Contributor

JIRA: https://issues.apache.org/jira/browse/FINERACT-2293

Migrates the create client address endpoint (POST /v1/client/{clientId}/addresses?type={addressTypeId})
from the legacy JsonCommand command-processing path to the new typed fineract-command framework.

Scope (PR 1 of 2 for FINERACT-2293)

  • New typed AddressCreateRequest / AddressCreateResponse POJOs with Jakarta Validation
  • New AddressMapper (MapStruct) — no JsonObject in the new code path
  • New AddressDomainService / AddressDomainServiceImpl — typed write service following the
    template module (FINERACT-2564) pattern
  • New AddressCreateCommand / AddressCreateCommandHandler using CommandHandler<REQ, RES>
  • Controller routes through CommandDispatcher and returns AddressCreateResponse directly
  • AntMatcher added in SecurityConfig for POST /api//client//addresses (CREATE_ADDRESS)
  • Resilience4j retry config for commandAddressCreate
  • Validation message bundle entries added
  • Legacy AddClientAddressCommandHandler deleted
  • Legacy addClientAddress(Long, Long, JsonCommand) method removed from
    AddressWritePlatformService (no remaining callers)
  • Legacy CommandWrapperBuilder.addClientAddress(Long, Long) builder method removed

addNewClientAddress(Client, JsonCommand) kept on AddressWritePlatformService since it is
still called by the client creation flow (ClientWritePlatformServiceJpaRepositoryImpl).
That migration is out of scope here.

Pattern follows the merged template-module reference (#5851).

Checklist

Please make sure these boxes are checked before submitting your pull request - thanks!

  • Write the commit message as per our guidelines
  • Acknowledge that we will not review PRs that are not passing the build ("green") - it is your responsibility to get a proposed PR to pass the build, not primarily the project's maintainers.
  • Create/update unit or integration tests for verifying the changes made.
  • Follow our coding conventions.
  • Add required Swagger annotation and update API documentation at fineract-provider/src/main/resources/static/legacy-docs/apiLive.htm with details of any API changes
  • This PR must not be a "code dump". Large changes can be made in a branch, with assistance. Ask for help on the developer mailing list.

Your assigned reviewer(s) will follow our guidelines for code reviews.

@nidhiii128 nidhiii128 force-pushed the FINERACT-2293-create-client-address branch 2 times, most recently from da0273f to 54d08b9 Compare June 29, 2026 07:30
@adamsaghy

Copy link
Copy Markdown
Contributor
* What went wrong:
Execution failed for task ':integration-tests:compileTestJava'.
> Compilation failed; see the compiler output below.
  /home/runner/work/fineract/fineract/integration-tests/src/test/java/org/apache/fineract/integrationtests/SmsCampaignIntegrationTest.java:66: warning: [removal] initializeRESTAssured() in Utils has been deprecated and marked for removal
          Utils.initializeRESTAssured();
               ^
  2 errors

Please run:
./gradlew spotlessApply spotbugsMain spotbugsTest checkstyleMain checkstyleTest
./gradlew --no-daemon build -x test -x cucumber -x doc

Before any PR or changes, please always run these two commands and make sure there is green build!

@nidhiii128 nidhiii128 force-pushed the FINERACT-2293-create-client-address branch from 54d08b9 to d064384 Compare June 30, 2026 12:37
@Aman-Mittal

Copy link
Copy Markdown
Member

@adamsaghy @vidakovic please review

@nidhiii128 nidhiii128 marked this pull request as draft July 10, 2026 07:17
@nidhiii128 nidhiii128 force-pushed the FINERACT-2293-create-client-address branch from d064384 to bf9f2a3 Compare July 12, 2026 08:37
@nidhiii128 nidhiii128 force-pushed the FINERACT-2293-create-client-address branch from bf9f2a3 to 15fa1da Compare July 12, 2026 08:54
@nidhiii128 nidhiii128 marked this pull request as ready for review July 12, 2026 12:51
@Aman-Mittal

Copy link
Copy Markdown
Member

@nidhiii128 Also resolve the comments that are addressed

@nidhiii128

Copy link
Copy Markdown
Contributor Author

Thanks for the review @vidakovic , here's what I changed:

  1. Deleted addClientAddress from CommandWrapperBuilder.
  2. Deleted addClientAddress + addNewClientAddress from
  3. AddressWritePlatformService (interface + impl), including the private
    createAddress / createClientAddress helpers.
  4. Migrated the caller in ClientWritePlatformServiceJpaRepositoryImpl.
    createClient -> it now builds typed AddressCreateRequest objects and
    calls AddressDomainService.create() directly. createClient itself is
    still JsonCommand end-to-end (its full typed migration is a separate
    PR since it's a large surface), so the request is populated via
    fromApiJsonHelper matching the pattern since the rest of that method
    already uses.
  5. Removed context.authenticatedUser() from AddressDomainServiceImpl.create.
  6. Reverted the HashMap regression in ClientHelper / ClientTest back to
    typed AddressCreateResponse.
  7. Moved the SecurityConfig client/addresses entry to the end of the
    authorization list.
  8. Kept the mock test in place per your comment.

updateClientAddress kept on the interface for now it's migrated in
the stacked PR #6085.
AddressCommandFromApiJsonDeserializer kept in the impl because
updateClientAddress still uses it. Removed in #6085 along with the
update migration.

@nidhiii128 nidhiii128 requested a review from vidakovic July 13, 2026 08:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants